<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Eigen-unsupported: Eigen::BlockSparseMatrix&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="eigendoxy.css" rel="stylesheet" type="text/css">
<!--  -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="Eigen_Silly_Professor_64x64.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="http://eigen.tuxfamily.org">Eigen-unsupported</a>
   &#160;<span id="projectnumber">3.4.90 (git rev 67eeba6e720c5745abc77ae6c92ce0a44aa7b7ae)</span>
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.svg"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classEigen_1_1BlockSparseMatrix.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="classEigen_1_1BlockSparseMatrix-members.html">List of all members</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Eigen::BlockSparseMatrix&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt; Class Template Reference<div class="ingroups"><a class="elRef" href="../group__Sparse__chapter.html">Sparse linear algebra</a> &raquo; <a class="elRef" href="../group__Sparse__Reference.html">Reference</a> &raquo; <a class="elRef" href="../group__SparseCore__Module.html">SparseCore module</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Scalar_, int _BlockAtCompileTime, int Options_, typename StorageIndex_&gt;<br />
class Eigen::BlockSparseMatrix&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;</h3>

<p>A versatile sparse matrix representation where each element is a block. </p>
<p>This class provides routines to manipulate block sparse matrices stored in a BSR-like representation. There are two main types :</p>
<ol type="1">
<li>All blocks have the same number of rows and columns, called block size in the following. In this case, if this block size is known at compile time, it can be given as a template parameter like <div class="fragment"><div class="line">BlockSparseMatrix&lt;Scalar, 3, ColMajor&gt; bmat(b_rows, b_cols);</div>
</div><!-- fragment --> Here, bmat is a b_rows x b_cols block sparse matrix where each coefficient is a 3x3 dense matrix. If the block size is fixed but will be given at runtime, <div class="fragment"><div class="line">BlockSparseMatrix&lt;Scalar, Dynamic, ColMajor&gt; bmat(b_rows, b_cols);</div>
<div class="line">bmat.setBlockSize(block_size);</div>
</div><!-- fragment --></li>
<li>The second case is for variable-block sparse matrices. Here each block has its own dimensions. The only restriction is that all the blocks in a row (resp. a column) should have the same number of rows (resp. of columns). It is thus required in this case to describe the layout of the matrix by calling setBlockLayout(rowBlocks, colBlocks).</li>
</ol>
<p>In any of the previous case, the matrix can be filled by calling <a class="el" href="classEigen_1_1BlockSparseMatrix.html#a6be601f9165d37b554c2abd811fd1934" title="Fill values in a matrix from a triplet list.">setFromTriplets()</a>. A regular sparse matrix can be converted to a block sparse matrix and vice versa. It is obviously required to describe the block layout beforehand by calling either <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> for fixed-size blocks or setBlockLayout for variable-size blocks.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Scalar_</td><td>The Scalar type </td></tr>
    <tr><td class="paramname">_BlockAtCompileTime</td><td>The block layout option. It takes the following values Dynamic : block size known at runtime a numeric number : fixed-size block known at compile time </td></tr>
  </table>
  </dd>
</dl>
</div><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for Eigen::BlockSparseMatrix&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classEigen_1_1BlockSparseMatrix__inherit__graph.png" border="0" usemap="#aEigen_1_1BlockSparseMatrix_3_01Scalar___00_01__BlockAtCompileTime_00_01Options___00_01StorageIndex___01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="aEigen_1_1BlockSparseMatrix_3_01Scalar___00_01__BlockAtCompileTime_00_01Options___00_01StorageIndex___01_4_inherit__map" id="aEigen_1_1BlockSparseMatrix_3_01Scalar___00_01__BlockAtCompileTime_00_01Options___00_01StorageIndex___01_4_inherit__map">
<area shape="rect" title="A versatile sparse matrix representation where each element is a block." alt="" coords="5,564,225,979"/>
<area shape="rect" target="_parent" href="../classEigen_1_1SparseMatrixBase.html" title=" " alt="" coords="5,189,225,516"/>
<area shape="rect" target="_parent" href="../structEigen_1_1EigenBase.html" title=" " alt="" coords="25,5,206,141"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a110a6e13581bfbc85ed613abd4e0ddc4"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a110a6e13581bfbc85ed613abd4e0ddc4">blockCols</a> () const</td></tr>
<tr class="separator:a110a6e13581bfbc85ed613abd4e0ddc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb00d451494f2ef50d24b836a8f193a3"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#adb00d451494f2ef50d24b836a8f193a3">blockColsIndex</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bj) const</td></tr>
<tr class="separator:adb00d451494f2ef50d24b836a8f193a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30118e4cd9d7aae5dbe97916e354459d"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a30118e4cd9d7aae5dbe97916e354459d">blockPtr</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> id) const</td></tr>
<tr class="separator:a30118e4cd9d7aae5dbe97916e354459d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadfe67a5d40092021010fa8f5bbc372e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#aadfe67a5d40092021010fa8f5bbc372e">blockRows</a> () const</td></tr>
<tr class="separator:aadfe67a5d40092021010fa8f5bbc372e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a657a44fa7c49305846c6f5d87bc9977c"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a657a44fa7c49305846c6f5d87bc9977c">blockRowsIndex</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bi) const</td></tr>
<tr class="separator:a657a44fa7c49305846c6f5d87bc9977c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5531e040482a964f5abc51870936d0b"><td class="memItemLeft" align="right" valign="top"><a id="aa5531e040482a964f5abc51870936d0b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#aa5531e040482a964f5abc51870936d0b">BlockSparseMatrix</a> (const <a class="el" href="classEigen_1_1BlockSparseMatrix.html">BlockSparseMatrix</a> &amp;other)</td></tr>
<tr class="memdesc:aa5531e040482a964f5abc51870936d0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy-constructor. <br /></td></tr>
<tr class="separator:aa5531e040482a964f5abc51870936d0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f31250f0b395323c740691f4db33ff"><td class="memTemplParams" colspan="2"><a id="a69f31250f0b395323c740691f4db33ff"></a>
template&lt;typename MatrixType &gt; </td></tr>
<tr class="memitem:a69f31250f0b395323c740691f4db33ff"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a69f31250f0b395323c740691f4db33ff">BlockSparseMatrix</a> (const MatrixType &amp;spmat)</td></tr>
<tr class="memdesc:a69f31250f0b395323c740691f4db33ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a sparse matrix. <br /></td></tr>
<tr class="separator:a69f31250f0b395323c740691f4db33ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19fe85249d2cbb17296918478d2d3ca5"><td class="memItemLeft" align="right" valign="top"><a id="a19fe85249d2cbb17296918478d2d3ca5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a19fe85249d2cbb17296918478d2d3ca5">BlockSparseMatrix</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> brow, <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bcol)</td></tr>
<tr class="memdesc:a19fe85249d2cbb17296918478d2d3ca5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct and resize. <br /></td></tr>
<tr class="separator:a19fe85249d2cbb17296918478d2d3ca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5324b2b59f8f88e4d212c1cde055a930"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../classEigen_1_1Map.html">Map</a>&lt; const <a class="elRef" href="../classEigen_1_1Matrix.html">BlockScalar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a5324b2b59f8f88e4d212c1cde055a930">coeff</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> brow, <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bcol) const</td></tr>
<tr class="separator:a5324b2b59f8f88e4d212c1cde055a930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e4d976b733c6027479860483763869"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../classEigen_1_1Ref.html">Ref</a>&lt; <a class="elRef" href="../classEigen_1_1Matrix.html">BlockScalar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a75e4d976b733c6027479860483763869">coeffRef</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> brow, <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bcol)</td></tr>
<tr class="separator:a75e4d976b733c6027479860483763869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66804a71611db19da18c4379c6a9886d"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a66804a71611db19da18c4379c6a9886d">cols</a> () const</td></tr>
<tr class="separator:a66804a71611db19da18c4379c6a9886d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b05f6379ee3c7603dcdc386755a766a"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a0b05f6379ee3c7603dcdc386755a766a">innerToBlock</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> inner) const</td></tr>
<tr class="separator:a0b05f6379ee3c7603dcdc386755a766a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acee42ccd07dc7eccc163bde2fef3c1e3"><td class="memItemLeft" align="right" valign="top"><a id="acee42ccd07dc7eccc163bde2fef3c1e3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#acee42ccd07dc7eccc163bde2fef3c1e3">isCompressed</a> () const</td></tr>
<tr class="memdesc:acee42ccd07dc7eccc163bde2fef3c1e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">for compatibility purposes with the <a class="elRef" href="../classEigen_1_1SparseMatrix.html">SparseMatrix</a> class <br /></td></tr>
<tr class="separator:acee42ccd07dc7eccc163bde2fef3c1e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f732362cf9bd6051d8eb014af874501"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a9f732362cf9bd6051d8eb014af874501">nonZeros</a> () const</td></tr>
<tr class="separator:a9f732362cf9bd6051d8eb014af874501"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae65b5b83863614db13953e4ee48df2fa"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae65b5b83863614db13953e4ee48df2fa">nonZerosBlocks</a> () const</td></tr>
<tr class="separator:ae65b5b83863614db13953e4ee48df2fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a7d567d3d0bb423b0506e6dad43e903"><td class="memTemplParams" colspan="2">template&lt;typename MatrixType &gt; </td></tr>
<tr class="memitem:a0a7d567d3d0bb423b0506e6dad43e903"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1BlockSparseMatrix.html">BlockSparseMatrix</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a0a7d567d3d0bb423b0506e6dad43e903">operator=</a> (const MatrixType &amp;spmat)</td></tr>
<tr class="memdesc:a0a7d567d3d0bb423b0506e6dad43e903"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment from a sparse matrix with the same storage order.  <a href="classEigen_1_1BlockSparseMatrix.html#a0a7d567d3d0bb423b0506e6dad43e903">More...</a><br /></td></tr>
<tr class="separator:a0a7d567d3d0bb423b0506e6dad43e903"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5036772f21dd33967c10373918b958e9"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a5036772f21dd33967c10373918b958e9">outerToBlock</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> outer) const</td></tr>
<tr class="separator:a5036772f21dd33967c10373918b958e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca1ce76d53760b60dc805e706dce1a6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a4ca1ce76d53760b60dc805e706dce1a6">reserve</a> (const <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> nonzerosblocks)</td></tr>
<tr class="memdesc:a4ca1ce76d53760b60dc805e706dce1a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate the internal array of pointers to blocks and their inner indices.  <a href="classEigen_1_1BlockSparseMatrix.html#a4ca1ce76d53760b60dc805e706dce1a6">More...</a><br /></td></tr>
<tr class="separator:a4ca1ce76d53760b60dc805e706dce1a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1d689c065a3fcb923c43fe77ba3f20b"><td class="memItemLeft" align="right" valign="top"><a id="ab1d689c065a3fcb923c43fe77ba3f20b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#ab1d689c065a3fcb923c43fe77ba3f20b">resize</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> brow, <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> bcol)</td></tr>
<tr class="memdesc:ab1d689c065a3fcb923c43fe77ba3f20b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the number of rows and columns blocks. <br /></td></tr>
<tr class="separator:ab1d689c065a3fcb923c43fe77ba3f20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b0bc89974d422ed6b0420b5ac1991d5"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a6b0bc89974d422ed6b0420b5ac1991d5">rows</a> () const</td></tr>
<tr class="separator:a6b0bc89974d422ed6b0420b5ac1991d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70edc5a082e961b77561589b3739d4f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3">setBlockLayout</a> (const <a class="elRef" href="../group__matrixtypedefs.html#gaf20e523ca57ee8ef0a945cd4703d2bfd">VectorXi</a> &amp;rowBlocks, const <a class="elRef" href="../group__matrixtypedefs.html#gaf20e523ca57ee8ef0a945cd4703d2bfd">VectorXi</a> &amp;colBlocks)</td></tr>
<tr class="memdesc:a70edc5a082e961b77561589b3739d4f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the row and column block layouts,.  <a href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3">More...</a><br /></td></tr>
<tr class="separator:a70edc5a082e961b77561589b3739d4f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae75fddd933b0ddc565b25b2ecb0802ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba">setBlockSize</a> (<a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> blockSize)</td></tr>
<tr class="memdesc:ae75fddd933b0ddc565b25b2ecb0802ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the block size at runtime for fixed-size block layout  <a href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba">More...</a><br /></td></tr>
<tr class="separator:ae75fddd933b0ddc565b25b2ecb0802ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0be96e0a6995ee7a49848739f2e07e8b"><td class="memTemplParams" colspan="2">template&lt;typename MatrixType &gt; </td></tr>
<tr class="memitem:a0be96e0a6995ee7a49848739f2e07e8b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a0be96e0a6995ee7a49848739f2e07e8b">setBlockStructure</a> (const MatrixType &amp;blockPattern)</td></tr>
<tr class="memdesc:a0be96e0a6995ee7a49848739f2e07e8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the nonzero block pattern of the matrix.  <a href="classEigen_1_1BlockSparseMatrix.html#a0be96e0a6995ee7a49848739f2e07e8b">More...</a><br /></td></tr>
<tr class="separator:a0be96e0a6995ee7a49848739f2e07e8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6be601f9165d37b554c2abd811fd1934"><td class="memTemplParams" colspan="2">template&lt;typename InputIterator &gt; </td></tr>
<tr class="memitem:a6be601f9165d37b554c2abd811fd1934"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a6be601f9165d37b554c2abd811fd1934">setFromTriplets</a> (const InputIterator &amp;begin, const InputIterator &amp;<a class="elRef" href="../group__Core__Module.html#ga0e45b6b2adead7c6a29815b99f9f14dd">end</a>)</td></tr>
<tr class="memdesc:a6be601f9165d37b554c2abd811fd1934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill values in a matrix from a triplet list.  <a href="classEigen_1_1BlockSparseMatrix.html#a6be601f9165d37b554c2abd811fd1934">More...</a><br /></td></tr>
<tr class="separator:a6be601f9165d37b554c2abd811fd1934"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a110a6e13581bfbc85ed613abd4e0ddc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a110a6e13581bfbc85ed613abd4e0ddc4">&#9670;&nbsp;</a></span>blockCols()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::blockCols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of columns grouped by blocks </dd></dl>

</div>
</div>
<a id="adb00d451494f2ef50d24b836a8f193a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb00d451494f2ef50d24b836a8f193a3">&#9670;&nbsp;</a></span>blockColsIndex()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::blockColsIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>bj</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the starting index of the bj col block </dd></dl>

</div>
</div>
<a id="a30118e4cd9d7aae5dbe97916e354459d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30118e4cd9d7aae5dbe97916e354459d">&#9670;&nbsp;</a></span>blockPtr()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::blockPtr </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the starting position of the block <code>id</code> in the array of values </dd></dl>

</div>
</div>
<a id="aadfe67a5d40092021010fa8f5bbc372e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadfe67a5d40092021010fa8f5bbc372e">&#9670;&nbsp;</a></span>blockRows()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::blockRows </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of rows grouped by blocks </dd></dl>

</div>
</div>
<a id="a657a44fa7c49305846c6f5d87bc9977c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a657a44fa7c49305846c6f5d87bc9977c">&#9670;&nbsp;</a></span>blockRowsIndex()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::blockRowsIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>bi</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the starting index of the bi row block </dd></dl>

</div>
</div>
<a id="a5324b2b59f8f88e4d212c1cde055a930"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5324b2b59f8f88e4d212c1cde055a930">&#9670;&nbsp;</a></span>coeff()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../classEigen_1_1Map.html">Map</a>&lt;const <a class="elRef" href="../classEigen_1_1Matrix.html">BlockScalar</a>&gt; <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::coeff </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>brow</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>bcol</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the value of the (i,j) block as an <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> <a class="elRef" href="../structEigen_1_1Dense.html">Dense</a> <a class="elRef" href="../classEigen_1_1Matrix.html">Matrix</a> </dd></dl>

</div>
</div>
<a id="a75e4d976b733c6027479860483763869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75e4d976b733c6027479860483763869">&#9670;&nbsp;</a></span>coeffRef()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../classEigen_1_1Ref.html">Ref</a>&lt;<a class="elRef" href="../classEigen_1_1Matrix.html">BlockScalar</a>&gt; <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::coeffRef </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>brow</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>bcol</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>a reference to the (i,j) block as an <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> <a class="elRef" href="../structEigen_1_1Dense.html">Dense</a> <a class="elRef" href="../classEigen_1_1Matrix.html">Matrix</a> </dd></dl>

</div>
</div>
<a id="a66804a71611db19da18c4379c6a9886d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66804a71611db19da18c4379c6a9886d">&#9670;&nbsp;</a></span>cols()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::cols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of cols </dd></dl>

</div>
</div>
<a id="a0b05f6379ee3c7603dcdc386755a766a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b05f6379ee3c7603dcdc386755a766a">&#9670;&nbsp;</a></span>innerToBlock()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::innerToBlock </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>inner</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the block index where inner belongs to </dd></dl>

</div>
</div>
<a id="a9f732362cf9bd6051d8eb014af874501"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f732362cf9bd6051d8eb014af874501">&#9670;&nbsp;</a></span>nonZeros()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::nonZeros </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the total number of nonzero elements, including eventual explicit zeros in blocks </dd></dl>

</div>
</div>
<a id="ae65b5b83863614db13953e4ee48df2fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae65b5b83863614db13953e4ee48df2fa">&#9670;&nbsp;</a></span>nonZerosBlocks()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::nonZerosBlocks </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of nonzero blocks </dd></dl>

</div>
</div>
<a id="a0a7d567d3d0bb423b0506e6dad43e903"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a7d567d3d0bb423b0506e6dad43e903">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<div class="memtemplate">
template&lt;typename MatrixType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classEigen_1_1BlockSparseMatrix.html">BlockSparseMatrix</a>&amp; <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::operator= </td>
          <td>(</td>
          <td class="paramtype">const MatrixType &amp;&#160;</td>
          <td class="paramname"><em>spmat</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Assignment from a sparse matrix with the same storage order. </p>
<p>Convert from a sparse matrix to block sparse matrix. </p><dl class="section warning"><dt>Warning</dt><dd>Before calling this function, tt is necessary to call either <a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3" title="Set the row and column block layouts,.">setBlockLayout()</a> (matrices with variable-size blocks) or <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> (for fixed-size blocks). </dd></dl>

</div>
</div>
<a id="a5036772f21dd33967c10373918b958e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5036772f21dd33967c10373918b958e9">&#9670;&nbsp;</a></span>outerToBlock()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::outerToBlock </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>outer</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the block index where outer belongs to </dd></dl>

</div>
</div>
<a id="a4ca1ce76d53760b60dc805e706dce1a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ca1ce76d53760b60dc805e706dce1a6">&#9670;&nbsp;</a></span>reserve()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::reserve </td>
          <td>(</td>
          <td class="paramtype">const <a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>nonzerosblocks</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Allocate the internal array of pointers to blocks and their inner indices. </p>
<dl class="section note"><dt>Note</dt><dd>For fixed-size blocks, call <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> to set the block. And For variable-size blocks, call <a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3" title="Set the row and column block layouts,.">setBlockLayout()</a> before using this function</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">nonzerosblocks</td><td>Number of nonzero blocks. The total number of nonzeros is is computed in <a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3" title="Set the row and column block layouts,.">setBlockLayout()</a> for variable-size blocks </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> </dd></dl>

</div>
</div>
<a id="a6b0bc89974d422ed6b0420b5ac1991d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b0bc89974d422ed6b0420b5ac1991d5">&#9670;&nbsp;</a></span>rows()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a> <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::rows </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of rows </dd></dl>

</div>
</div>
<a id="a70edc5a082e961b77561589b3739d4f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70edc5a082e961b77561589b3739d4f3">&#9670;&nbsp;</a></span>setBlockLayout()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::setBlockLayout </td>
          <td>(</td>
          <td class="paramtype">const <a class="elRef" href="../group__matrixtypedefs.html#gaf20e523ca57ee8ef0a945cd4703d2bfd">VectorXi</a> &amp;&#160;</td>
          <td class="paramname"><em>rowBlocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" href="../group__matrixtypedefs.html#gaf20e523ca57ee8ef0a945cd4703d2bfd">VectorXi</a> &amp;&#160;</td>
          <td class="paramname"><em>colBlocks</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the row and column block layouts,. </p>
<p>This function set the size of each row and column block. So this function should be used only for blocks with variable size. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rowBlocks</td><td>: Number of rows per row block </td></tr>
    <tr><td class="paramname">colBlocks</td><td>: Number of columns per column block </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1BlockSparseMatrix.html#ab1d689c065a3fcb923c43fe77ba3f20b" title="Set the number of rows and columns blocks.">resize()</a>, <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> </dd></dl>

</div>
</div>
<a id="ae75fddd933b0ddc565b25b2ecb0802ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae75fddd933b0ddc565b25b2ecb0802ba">&#9670;&nbsp;</a></span>setBlockSize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::setBlockSize </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" href="../structEigen_1_1EigenBase.html#a554f30542cc2316add4b1ea0a492ff02">Index</a>&#160;</td>
          <td class="paramname"><em>blockSize</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>set the block size at runtime for fixed-size block layout </p>
<p>Call this only for fixed-size blocks </p>

</div>
</div>
<a id="a0be96e0a6995ee7a49848739f2e07e8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0be96e0a6995ee7a49848739f2e07e8b">&#9670;&nbsp;</a></span>setBlockStructure()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<div class="memtemplate">
template&lt;typename MatrixType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::setBlockStructure </td>
          <td>(</td>
          <td class="paramtype">const MatrixType &amp;&#160;</td>
          <td class="paramname"><em>blockPattern</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the nonzero block pattern of the matrix. </p>
<p>Given a sparse matrix describing the nonzero block pattern, this function prepares the internal pointers for values. After calling this function, any <em>nonzero</em> block (bi, bj) can be set with a simple call to coeffRef(bi,bj).</p>
<dl class="section warning"><dt>Warning</dt><dd>Before calling this function, tt is necessary to call either <a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3" title="Set the row and column block layouts,.">setBlockLayout()</a> (matrices with variable-size blocks) or <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> (for fixed-size blocks).</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blockPattern</td><td><a class="elRef" href="../structEigen_1_1Sparse.html">Sparse</a> matrix of boolean elements describing the block structure</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classEigen_1_1BlockSparseMatrix.html#a70edc5a082e961b77561589b3739d4f3" title="Set the row and column block layouts,.">setBlockLayout()</a> </dd>
<dd>
<a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> </dd></dl>

</div>
</div>
<a id="a6be601f9165d37b554c2abd811fd1934"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6be601f9165d37b554c2abd811fd1934">&#9670;&nbsp;</a></span>setFromTriplets()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Scalar_ , int _BlockAtCompileTime, int Options_, typename StorageIndex_ &gt; </div>
<div class="memtemplate">
template&lt;typename InputIterator &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classEigen_1_1BlockSparseMatrix.html">Eigen::BlockSparseMatrix</a>&lt; Scalar_, _BlockAtCompileTime, Options_, StorageIndex_ &gt;::setFromTriplets </td>
          <td>(</td>
          <td class="paramtype">const InputIterator &amp;&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const InputIterator &amp;&#160;</td>
          <td class="paramname"><em>end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fill values in a matrix from a triplet list. </p>
<p>Each triplet item has a block stored in an <a class="el" href="namespaceEigen.html" title="Namespace containing all symbols from the Eigen library.">Eigen</a> dense matrix. The InputIterator class should provide the functions row(), col() and value()</p>
<dl class="section note"><dt>Note</dt><dd>For fixed-size blocks, call <a class="el" href="classEigen_1_1BlockSparseMatrix.html#ae75fddd933b0ddc565b25b2ecb0802ba" title="set the block size at runtime for fixed-size block layout">setBlockSize()</a> before this function.</dd></dl>
<p>FIXME Do not accept duplicates </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="BlockSparseMatrix_8h_source.html">BlockSparseMatrix.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceEigen.html">Eigen</a></li><li class="navelem"><a class="el" href="classEigen_1_1BlockSparseMatrix.html">BlockSparseMatrix</a></li>
    <li class="footer">Generated on Thu Apr 21 2022 13:08:00 for Eigen-unsupported by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
